package com.sgb.kjwl.repository;

import com.sgb.kjwl.model.entity.BidDetailEntity;
import com.sgb.kjwl.model.entity.BidInvitationListEntity;
import com.sgb.jicai.entity.FilterEntity;
import com.sgb.kjwl.model.entity.LoginEntity;
import com.swgk.core.view.entity.MenuEntity;
import com.sgb.link.entity.PublicTypeEntity;
import com.sgb.kjwl.model.entity.SelfEntity;
import com.sgb.kjwl.model.entity.UserMsgEntity;
import com.sgb.kjwl.model.entity.self.GoodsListEntity3;
import com.sgb.kjwl.model.entity.self.SelfPickListEntity3;
import com.sgb.kjwl.model.entity.supplier3.DictEntity3;
import com.sgb.kjwl.model.entity.user.AddDeviceEntity;
import com.sgb.kjwl.model.entity.user.AddGoodsEntity;
import com.sgb.kjwl.model.entity.user.AddMachineInEntity;
import com.sgb.kjwl.model.entity.user.AddMachineOutEntity;
import com.sgb.kjwl.model.entity.user.AddPackersEntity;
import com.sgb.kjwl.model.entity.user.AddTalentEntity;
import com.sgb.kjwl.model.entity.user.AddressEntity;
import com.sgb.kjwl.model.entity.user.AuthEntity;
import com.sgb.kjwl.model.entity.user.CategoryEntity;
import com.sgb.kjwl.model.entity.user.DeviceStateEntity;
import com.sgb.kjwl.model.entity.user.DictEntity;
import com.sgb.kjwl.model.entity.user.GoodsEntity;
import com.sgb.kjwl.model.entity.user.MachineStateEntity;
import com.sgb.kjwl.model.entity.user.MachineryCompanyEntity;
import com.sgb.kjwl.model.entity.user.NewCategeryEntity;
import com.sgb.kjwl.model.entity.user.PackersStateEntity;
import com.sgb.kjwl.model.entity.user.PhotoEntity;
import com.sgb.kjwl.model.entity.user.SupplierAuthEntity;
import com.sgb.kjwl.model.entity.user.TalentTypeEntity;
import com.sgb.kjwl.model.entity.user.UnitEntity;
import com.sgb.kjwl.model.entity.user.UserAddressEntity;
import com.swgk.core.base.model.entity.ListResponse;
import com.swgk.core.base.model.entity.BaseEntity;

import java.io.File;
import java.util.List;
import java.util.Map;

import io.reactivex.Observable;

public interface SelfRepertory extends BaseRepertory {

    Observable<List<SelfEntity>> createSelfOderData();

    Observable<List<SelfEntity>> createPickData();

    Observable<List<SelfEntity>> createTenderData();

    Observable<List<SelfEntity>> createCompanyData();

    Observable<List<SelfEntity>> createCustomerData();

    Observable<List<SelfEntity>> createPackerData();

    Observable<List<SelfEntity>> createLogisticsData();

    Observable<List<SelfEntity>> createLogisticsData2();

    Observable<List<SelfEntity>> createJiCaiData();

    Observable<List<SelfEntity>> createToDoData();

    Observable<List<SelfEntity>> createManageData();

    Observable<List<SelfEntity>> createGasManageData();

    Observable<List<SelfEntity>> createPublishData(int role);

    Observable<BaseEntity> register(String account, String pwd, String code);

    Observable<BaseEntity> getRegisterCode(String phone);

    Observable<BaseEntity> getForgetCode(String phone);

    Observable<BaseEntity> forgetPwd(String account, String pwd, String code);

    Observable<LoginEntity> login(String account, String pwd, String code);

    Observable<BaseEntity> loginOut(String accesstoken);

    Observable<BaseEntity<UserMsgEntity>> getCurrentUserInfo();

    Observable<BaseEntity<SupplierAuthEntity>> getSupplierAuthInfo();

    Observable<BaseEntity> addSupplierAuth(SupplierAuthEntity supplierAuthEntity);

    Observable<BaseEntity<PhotoEntity>> uploadPhoto(File file);

    Observable<BaseEntity> uploadFile(File file);

    Observable<BaseEntity<List<String>>> uploadMutiFile(List<File> fileList);

    Observable<List<String>> getCompanyType();

    Observable<BaseEntity<List<DictEntity>>> getBusiness();

    Observable<BaseEntity<List<AddressEntity<List<AddressEntity<List<AddressEntity>>>>>>> getAddress();

    Observable<BaseEntity<ListResponse<List<PackersStateEntity>>>> getPublishPackers(String state, int page, int size);

    Observable<BaseEntity<List<MenuEntity<MenuEntity<MenuEntity>>>>> getCategoryMenu();

    Observable<BaseEntity<List<NewCategeryEntity<List<NewCategeryEntity<List<NewCategeryEntity>>>>>>> getNewCategoryMenu();

    Observable<BaseEntity> onPacker(String id);

    Observable<BaseEntity> offPacker(String id);

    Observable<BaseEntity> delPackersList(String id);

    Observable<BaseEntity<List<CategoryEntity<CategoryEntity>>>> getPackersCategory();

    Observable<BaseEntity> addPackers(AddPackersEntity entity);

    Observable<BaseEntity> editPackers(AddPackersEntity entity);

    Observable<BaseEntity<AddPackersEntity>> getPackersDetail(String id);

    Observable<BaseEntity<List<AddressEntity<List<AddressEntity>>>>> getPackersAddress();

    Observable< List<TalentTypeEntity>> getDefaultTalentSkill(String no, List<TalentTypeEntity<List<TalentTypeEntity>>> typeEntityList);

    Observable<BaseEntity> addTalent(AddTalentEntity entity);

    Observable<BaseEntity> editTalent(AddTalentEntity entity);

    Observable<BaseEntity<AddTalentEntity>> getTalentDetail();

    Observable<BaseEntity<List<TalentTypeEntity<List<TalentTypeEntity>>>>> getTalentType();

    Observable<BaseEntity<ListResponse<List<DeviceStateEntity>>>> getPublishDevice(String state, int page, int size,String text);

    Observable<BaseEntity> addDevice(AddDeviceEntity entity);

    Observable<BaseEntity> updateDevice(AddDeviceEntity entity);

    Observable<BaseEntity> addGoods(AddGoodsEntity entity);

    Observable<BaseEntity> deviceOnlineOrOff(Map map);

    Observable<BaseEntity> delDeviceList(Map map);

    Observable<BaseEntity<List<UnitEntity>>> getDeviceUnit();

    Observable<BaseEntity<List<PublicTypeEntity<List<PublicTypeEntity>>>>> getDeviceType(String no);

    Observable<BaseEntity<AddDeviceEntity>> getPublishDeviceDetail(String id);

    Observable<BaseEntity<List<AddressEntity>>> getDeviceAddress(String parentNo);

    Observable<BaseEntity<List<FilterEntity<List<FilterEntity>>>>> getPulishDeviceAttr(String firstCategory, String secCategory);

    Observable<BaseEntity> addMachineOut(AddMachineOutEntity entity);

    //Observable<BaseEntity> editMachineOut(AddMachineOutEntity entity);

    Observable<BaseEntity<ListResponse<List<MachineStateEntity>>>> getPublishMachineOut(int page, int size, String status, String text);

    Observable<BaseEntity<AddMachineOutEntity>> getPublishMachineOutDetail(String id, String categoryType);

    Observable<BaseEntity> machineOutOnlineOrOff(String id, String status);

    Observable<BaseEntity> delMachineOutList(String id);

//    Observable<BaseEntity> checkToken(String token);

    Observable<BaseEntity<AuthEntity<List<MachineryCompanyEntity>>>> getAuthInfo();

    Observable<BaseEntity> checkToken(Map map);

    Observable<BaseEntity<List<PublicTypeEntity<List<PublicTypeEntity>>>>> getMachineOutType();

    Observable<BaseEntity<List<FilterEntity<List<FilterEntity>>>>> getMachineDict(String firstCategory, String secondCategory);

    Observable<BaseEntity<List<DictEntity>>> getMachinePrice();

    Observable<BaseEntity> addMachineIn(AddMachineInEntity entity);

    Observable<BaseEntity<ListResponse<List<MachineStateEntity>>>> getPublishMachineIn(int page, int size, String status);

    Observable<BaseEntity> editMachineIn(AddMachineInEntity entity);

    Observable<BaseEntity> machineInOnlineOrOff(String id, String status);

    Observable<BaseEntity> delMachineInList(String id);

    Observable<BaseEntity<AddMachineInEntity>> getPublishMachineInDetail(String id);

    Observable<BaseEntity> changeMobile(Map map);

    Observable<BaseEntity> changePwd(Map map);

    Observable<BaseEntity> commitBankInfo(Map map);

    Observable<BaseEntity<ListResponse<List<UserAddressEntity>>>> getUserAddressList();

    Observable<BaseEntity> delAddress(String id);

    Observable<BaseEntity<UserAddressEntity>> searchAddress(String id);

    Observable<BaseEntity> editAddress(UserAddressEntity data);

    Observable<BaseEntity> addAddress(UserAddressEntity data);

    Observable<BaseEntity<GoodsEntity>> getGoodsList(String status);

    Observable<BaseEntity> downGoods(String id);

    Observable<BaseEntity> upGoods(String id);

    Observable<BaseEntity> deleteGoods(String id);

    Observable<BaseEntity<ListResponse<List<BidInvitationListEntity>>>> getBidInvitationList(int page, int size);

    Observable<BaseEntity<BidDetailEntity>> getBidDetail(String id);

    Observable<BaseEntity<ListResponse<List<GoodsListEntity3>>>> getGoodsList(int page, int size, String condition, String status, List<String> cid3,String companyId, String flag);

    Observable<BaseEntity<List<DictEntity3>>> getGoodsAllDict();

    Observable<BaseEntity> upDowngetGoods(String opt, List<String> goodsIds);

    Observable<BaseEntity> modifyGoodsPrice(String price, String type, List<String> goodsIds);

    Observable<BaseEntity> modifyGoodsDetailPrice(String id, String price);

    Observable<BaseEntity<ListResponse<List<SelfPickListEntity3>>>> getCollectList(int page, int size, String status, String type,String groupBuyClass,String goodsName);

    Observable<BaseEntity> deleteCollectList(String no);

    Observable<BaseEntity> deleteCollectList2(String no);
}
